package types

import (
	"fmt"
	"github.com/bytedance/sonic"
	"os"
	"smoot-code/service/util"
)

type Config struct {
	CodegenUrl  string
	GenerateUrl string
	DataUrl     string
	Data        string
}

var configData *Config

func InitConfig() error {
	configMap := map[string]any{}
	dat, err := os.ReadFile("./config.json")
	if err != nil {
		return err
	}
	err = sonic.Unmarshal(dat, &configMap)
	if err != nil {
		fmt.Printf("%+v", err)
		return err
	}
	codegenUrl, err := util.AnyToStr(configMap["codegenUrl"])
	if err != nil {
		return err
	}
	generateUrl, err := util.AnyToStr(configMap["generateUrl"])
	if err != nil {
		return err
	}

	dataUrl, err := util.AnyToStr(configMap["dataUrl"])
	if err != nil {
		return err
	}

	data, err := util.AnyToStr(configMap["data"])
	if err != nil {
		return err
	}
	configData = &Config{
		CodegenUrl:  codegenUrl,
		GenerateUrl: generateUrl,
		DataUrl:     dataUrl,
		Data:        data,
	}

	return nil
}

// GetConfig 获取实例
func GetConfig() *Config {
	return configData
}
